home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Gamer (Italian) 36
/
PC Gamer IT CD 36 2-2.iso
/
SINDEMO
/
sindemo2.exe
/
data
/
base
/
pak0.pak
/
maps
/
intro.scr
< prev
next >
Wrap
Text File
|
1998-09-22
|
49KB
|
1,707 lines
//==========================================
// Intro Map Script
// Tom Mustaine - Ritual Entertainment
//==========================================
// This map is not deathmatchable
//parm.deathmatch getcvar deathmatch
//parm.deathmatch ifnotequal 0 goto maps/intro_dm.scr::start
//parm.deathmatch ifnotequal 0 goto end_singleplayer_script
//goto single_player_script_start
//end
//end_singleplayer_script:
//end
//==========================================
// Intro Dialog
single_player_script_start:
setdialogscript dialog/dialog_intro.scr
//
//==========================================
//==========================================
// Jump to Intro Cinematic
//==========================================
$skip_trigger hide
thread banktimecon
goto cinematic
end
//------------------------------------------
//******************************************
//==========================================
// Main thread and Script init
//==========================================
//******************************************
//------------------------------------------
mainthread:
thread helicopter_damage_thread // Heli Damage sound thread
thread rotors_spin_down_thread // Rotor spindown for end
thread billboard_thread // Billboard setup and wait
thread ammo1_thread // Ammobox1 wait
thread ammo2_thread // Ammobox2 wait
thread bank_entrance_thread // Awning collapse and wait thread
thread t1000_secret // Easter egg
// Initial Level variable setup
level.count_bad_guys = 0
level.count_good_guys = 0
level.PObjective1 = 0
level.PObjective2 = 0
level.PObjective3 = 0
level.SObjective1 = 0
level.tree_death_toll = 0
game.intro_start = 1
$door1 notsolid // Fix guys getting caught on doors
$door2 notsolid // Fix guys getting caught on doors
$door3 notsolid // Fix guys getting caught on doors
thread turret_death_wait // Turret death counter
thread turret1_deathreport // Object waiting for turret death
thread turret2_deathreport // Object waiting for turret death
thread turret3_deathreport // Object waiting for turret death
thread MissionComputer // Mission Computer
thread SkillLevelSettings // Skill level settings
thread pillar // Awning trigger thread
thread heli_damage_dialog // Helicopter damage dialog thread
thread random_sounds // Random sounds near player head
thread shootsign // Smart ass remark sign
end
//==========================================
//------------------------------------------
//==========================================
//------------------------------------------
//******************************************
//==========================================
// All cinematic stuff
//==========================================
//******************************************
//------------------------------------------
cinematic:
cinematic // start up as a cinematic
skipthread skip_sequence // setup our skip thread
waitforplayer // wait till the player is spawned
freezeplayer // freeze the player
fadeout 0.5 0 0 0 // fade out
thread initialize_thread // Setup level and actors
local.waitforthread = parm.previousthread
waitForThread local.waitforthread
thread PoliceCar1_Movie // Start Car1
thread PoliceCar2_Movie // Start Car2
thread camera_thread // Start Camera
level.camerathread = parm.previousthread
thread pigeon_thread // Start Pigeon
level.pigeonthread = parm.previousthread
$roofblade thread ignore_thread // Actors ignore everything
$groundblade thread ignore_thread // Actors ignore everything
$cinematic_thug1 thread ignore_thread // Actors ignore everything
$cinematic_thug2 thread ignore_thread // Actors ignore everything
end
//==========================================
// Main Cinematic Skip Sequence
//==========================================
skip_sequence:
fadeout 0.1 0 0 0
noncinematic // no longer a cinematic
wait 0.1 // wait for fade out
cueplayer // go back to the player
level.camera2started ifequal 1 terminate level.camera2thread // kill any threads we have going
terminate level.camerathread
terminate level.pigeonthread
$pigeon remove // remove that darn pigeon
thread helicopter_setup_thread // setup helicopter
local.WaitingForThread = parm.previousthread
waitForThread local.WaitingForThread
//waitForThread parm.previousthread
$helicopter jumpto $hover_path
thread mainthread // Skip to action!
local.WaitingForThread = parm.previousthread
waitForThread local.WaitingForThread
thread start_action_thread
end
//==========================================
// Cinematic/Level Initilize thread
//==========================================
initialize_thread:
hud 0 // Kill hud for Cinematic
music none // No music
$sun1 remove
freezeplayer
$camera2 moveto $cam2start
$node hide
$node notsolid
$lookatme hide
$lookatme notsolid
$roofblade hide
$groundblade hide
$groundblade notsolid
$roofblade notsolid
$node time .1
$node rotateYup 180
waitFor $node
music aux5 none
$cinematic_thug1 anim talk1
$cinematic_thug2 anim talk1
end
//==========================================
// Police Car #1 go
//==========================================
PoliceCar1_Movie:
local.Movie = 1
local.WaitTime = 0
$policecar1_movie jumpto $police1_movie_start
$policetruck1_movie jumpto $police1_movie_start
$policetruck1_movie hide
local.VehicleName string "$policecar1_movie"
$policecar1_siren_movie bind local.VehicleName
wait 0.1
goto PoliceCar1_Movie_Loop
PoliceCar1_Movie_Loop:
local.VehicleName show
$policecar1_siren_movie playsound "environment/alarm/police/siren2.wav" 4
local.VehicleName followpath $police1_movie_start normalangles
waitFor local.VehicleName
wait local.WaitTime
$policecar1_siren_movie stopsound
level.piller ifequal 2 goto movieend1
$police1_movie_launcher launch rocket
wait 0.3
parm.VehicleName string local.VehicleName
thread Police1_Movie_CarExplode
local.waitforthread = parm.previousthread
waitForThread parm.previousthread
local.VehicleName jumpto $police1_movie_start
local.Vehicle randomint 100
local.Vehicle ifgreater 50 local.VehicleName string "$policetruck1_movie"
local.Vehicle iflessequal 50 local.VehicleName string "$policecar1_movie"
$policecar1_siren_movie bind local.VehicleName
local.WaitTime randomint 10
local.WaitTime += 1
wait local.WaitTime
local.Movie ifequal 1 wait 15
local.Movie = 0
goto PoliceCar1_Movie_Loop
end
movieend1: // Stop Car from moving
end
//==========================================
// Police Car #1 explode
//==========================================
Police1_Movie_CarExplode:
local.VehicleName string parm.VehicleName
local.VehicleName time 0.6
local.VehicleName moveUp 128
local.VehicleName moveWest 24
local.VehicleName rotateXup -60
trigger $police1_movie_boom
//local.VehicleName shatter "1 1 1" 20 10 40 .05 0
$policecar1_siren_movie playsound "environment/alarm/police/siren2down.wav" 3
waitFor local.VehicleName
local.VehicleName time 0.3
local.VehicleName moveUp 64
local.VehicleName moveWest 12
local.VehicleName rotateXup -30
waitFor local.VehicleName
local.VehicleName time 0.9
local.VehicleName moveDown 128
local.VehicleName moveWest 36
local.VehicleName rotateXup -90
trigger $police1_movie_boom
local.VehicleName shatter "1 1 1" 40 20 40 .05 0
waitFor local.VehicleName
local.VehicleName hide
local.VehicleName time 0.1
local.VehicleName rotateXup 180
trigger $police1_movie_boom
waitFor local.VehicleName
end
//==========================================
// Police Car #2 go
//==========================================
PoliceCar2_Movie:
local.Movie = 1
local.WaitTime = 4
$policecar2_movie jumpto $police2_movie_start
$policetruck2_movie jumpto $police2_movie_start
$policetruck2_movie hide
local.VehicleName string "$policecar2_movie"
$policecar2_siren_movie bind local.VehicleName
wait 4
goto PoliceCar2_Movie_Loop
PoliceCar2_Movie_Loop:
local.VehicleName show
$policecar2_siren_movie playsound "environment/alarm/police/siren2.wav" 4
local.VehicleName followpath $police2_movie_start normalangles
waitFor local.VehicleName
wait local.WaitTime
$policecar2_siren_movie stopsound
level.piller ifequal 2 goto movieend2
$police2_movie_launcher launch rocket
wait 0.3
parm.VehicleName string local.VehicleName
thread Police2_Movie_CarExplode
local.waitforthread = parm.previousthread
waitForThread parm.previousthread
local.VehicleName jumpto $police2_movie_start
local.Vehicle randomint 100
local.Vehicle ifgreater 50 local.VehicleName string "$policetruck2_movie"
local.Vehicle iflessequal 50 local.VehicleName string "$policecar2_movie"
$policecar2_siren_movie bind local.VehicleName
local.WaitTime randomint 10
local.WaitTime += 1
wait local.WaitTime
local.Movie ifequal 1 wait 15
local.Movie = 0
goto PoliceCar2_Movie_Loop
end
movieend2: // Car2 stop going
end
//==========================================
// Police Car #2 explode
//==========================================
Police2_Movie_CarExplode:
local.VehicleName string parm.VehicleName
local.VehicleName time 0.6
local.VehicleName moveUp 128
local.VehicleName moveNorth 24
local.VehicleName rotateZup -60
trigger $police2_movie_boom
//local.VehicleName shatter "1 1 1" 20 10 40 .05 0
$policecar2_siren_movie playsound "environment/alarm/police/siren2down.wav" 3
waitFor local.VehicleName
local.VehicleName time 0.3
local.VehicleName moveUp 64
local.VehicleName moveNorth 12
local.VehicleName rotateZup -30
waitFor local.VehicleName
local.VehicleName time 0.9
local.VehicleName moveDown 128
local.VehicleName moveNorth 36
local.VehicleName rotateZup -90
trigger $police2_movie_boom
local.VehicleName shatter "1 1 1" 40 20 40 .05 0
waitFor local.VehicleName
local.VehicleName hide
local.VehicleName time 0.1
local.VehicleName rotateZup 180
trigger $police2_movie_boom
waitFor local.VehicleName
end
//==========================================
// First Camera Thread - MAIN CINEMATIC
//==========================================
camera_thread:
$pigeon speed 10
$pigeon moveto $pigeonstart
$camera moveto $pigeonstart
$camera follow $pigeon
$pigeon followpath $pigeonstart
cueplayer
$camera jumpcut
cuecamera $camera
fadein 2 0 0 0
end
//==========================================
// Pigeon Thread - MAIN CINEMATIC
//==========================================
pigeon_thread:
$skip_trigger notrigger
$pigeon nextanim pigeon_fly
wait 1.5
$skip_trigger notrigger
$pigeon nextanim coast
wait 2.3
$pigeon nextanim pigeon_fly
wait 4
$pigeon nextanim coast
$pigeon nextanim coast
wait 4.5
$pigeon nextanim pigeon_fly
wait 1.5
$cinematic_thug1 anim attack
$pigeon nextanim coast
wait .8
music aux6 none
wait .2
trigger $cinematic_sound1
$pigeon gib 1 30 1 organic // Piegon Dies
$pigeon gib 20 30 1 feather
wait .5
skipthread "" // no longer a cinematic
thread camera2_thread
level.camera2thread = parm.previousthread
end
//==========================================
// Cinematic actors ignore thread
//==========================================
ignore_thread:
local.self ignoreall
pause
goto ignore_thread
end
//==========================================
// 2nd and 3rd Cinematic Camera Setup - MAIN CINEMATIC
//==========================================
camera2_thread:
level.camera2started = 1
$camera follow $node $lookatme
wait 2
thread camera3_thread
$camera follow $cam2start $lookatme
wait 2
$camera pause
wait 5
$camera continue
thread move_lookatme_thread
wait 8
fadeout 1 0 0 0
noncinematic // we are no longer a cinematic
cueplayer
thread mainthread
thread start_action_thread
end
camera3_thread:
music aux7
parm.thug1 string $cinematic_thug1
parm.thug2 string $cinematic_thug2
thread dialog::thug_too_easy
thread helicopter_ride_thread
wait 1
$cinematic_thug1 anim talk2
wait 2
$cinematic_thug1 anim talk1
wait 1.5
$cinematic_thug1 anim talk2
wait 2.5
$cinematic_thug1 anim laugh2
wait .5
$cinematic_thug2 anim laugh2
wait 1
$cinematic_thug1 anim talk1
wait .5
$cinematic_thug2 anim talk1
wait 4.5
parm.thug1 string $cinematic_thug1
parm.thug2 string $cinematic_thug2
thread dialog::blade_suprise
end
move_lookatme_thread:
$lookatme time 5
$lookatme moveUp 128
waitFor $lookatme
$lookatme time 3.5
$lookatme moveUp 148
$lookatme moveEast 384
$lookatme moveSouth 96
waitFor $lookatme
end
//==========================================
// Roof Cinematic - ROOF CINMEATIC
//==========================================
roofcam_thread:
cinematic
skipthread "roofcam_skip"
trigger $glass2
$helicopter time .1
$helicopter notsolid
$helicopter moveto $roofhelistart
*1 hide
$heligun show
$roofblade show
fadein 1 0 0 0
hud 0
freezeplayer
thread roofheli_thread
$roofcam jumpcut
$roofcam moveto $roofcamstart
$roofcam lookat $roofblade
freezeplayer
cuecamera $roofcam
$roofblade thread roofblade_thread
$roofcam follow $roofcamstart $roofblade
wait 6
$roofcam follow $roofblade
waitFor $roofcam
game.intro_start = 1 // Telling bank what exit player took
//thread exit_level_thread
end
roofblade_thread:
thread exit_anyhow_roof
$roofblade anim 1hand_idle3
wait 3.5
local.self walkto $roofpath1
waitFor $roofblade
local.self walkto $roofpath2
wait 1
fadeout 1 0 0 0
waitFor $roofblade
map bank$start1
end
exit_anyhow_roof:
wait 8
map bank$start1
end
roofcam_skip:
noncinematic
fadeout 1 0 0 0
wait 1
map bank$start1
end
//==========================================
// Ground Cinematic - GROUND CINEMATIC
//==========================================
groundcam_thread:
cinematic
skipthread groundcam_skip
*1 hide
$heligun show
$helicopter notsolid
$groundblade show
$groundblade thread groundblade_thread
$groundcam follow $groundcam_start $groundblade
$groundcam jumpcut
freezeplayer
cuecamera $groundcam
fadein 1 0 0 0
wait 4
$groundcam follow $groundblade
game.intro_start = 2 // Telling bank what exit player took
//thread exit_level_thread
wait 10
end
groundblade_thread:
thread end_level2_nomatterwhat
$groundblade anim 1hand_idle3
wait 3.5
local.self walkto $groundpath1
waitFor $groundblade
local.self runto $groundpath2
waitFor $groundblade
$groundblade runto $groundpath7
waitFor $groundblade
thread end_level2
$groundblade runto $groundpath8
waitFor $groundblade
end
end_level2:
fadeout 1 0 0 0
wait 1.5
map bank$start2
end
end_level2_nomatterwhat: // Exit level anyhow if blade dosen't reach pathnodes.
wait 10
fadeout 1 0 0 0
wait 1
map bank$start2
end
groundcam_skip:
noncinematic
fadeout 1 0 0 0
wait 1
map bank$start
end
//******************************************
//==========================================
// End of Cinematic section
//==========================================
//******************************************
//******************************************
//==========================================
// Other level threads
//==========================================
//******************************************
//==========================================
// Banktime Console
//==========================================
banktimecon:
$banktime time 10
$banktime rotateY 10
level.hour = 3
level.tens = 1
level.mins = 2
banktimeconprint:
level.digit1 = level.tens
level.digit2 = level.mins
local.PrintString string "xl 0 jcy fc 1 1 1 1.0 string \""
level.hour ifequal 1 local.PrintString append " 1:\" xl 60 jcy fc 1 1 1 1.0 string \""
level.hour ifequal 2 local.PrintString append " 2:\" xl 60 jcy fc 1 1 1 1.0 string \""
level.hour ifequal 3 local.PrintString append " 3:\" xl 60 jcy fc 1 1 1 1.0 string \""
level.hour ifequal 4 local.PrintString append " 4:\" xl 60 jcy fc 1 1 1 1.0 string \""
level.hour ifequal 5 local.PrintString append " 5:\" xl 60 jcy fc 1 1 1 1.0 string \""
level.hour ifequal 6 local.PrintString append " 6:\" xl 60 jcy fc 1 1 1 1.0 string \""
level.hour ifequal 7 local.PrintString append " 7:\" xl 60 jcy fc 1 1 1 1.0 string \""
level.hour ifequal 8 local.PrintString append " 8:\" xl 60 jcy fc 1 1 1 1.0 string \""
level.hour ifequal 9 local.PrintString append " 9:\" xl 60 jcy fc 1 1 1 1.0 string \""
level.hour ifequal 10 local.PrintString append "10:\" xl 60 jcy fc 1 1 1 1.0 string \""
level.hour ifequal 11 local.PrintString append "11:\" xl 60 jcy fc 1 1 1 1.0 string \""
level.hour ifequal 12 local.PrintString append "12:\" xl 60 jcy fc 1 1 1 1.0 string \""
level.digit1 ifequal 0 local.PrintString append "0\" xl 80 jcy fc 1 1 1 1.0 string \""
level.digit1 ifequal 1 local.PrintString append "1\" xl 80 jcy fc 1 1 1 1.0 string \""
level.digit1 ifequal 2 local.PrintString append "2\" xl 80 jcy fc 1 1 1 1.0 string \""
level.digit1 ifequal 3 local.PrintString append "3\" xl 80 jcy fc 1 1 1 1.0 string \""
level.digit1 ifequal 4 local.PrintString append "4\" xl 80 jcy fc 1 1 1 1.0 string \""
level.digit1 ifequal 5 local.PrintString append "5\" xl 80 jcy fc 1 1 1 1.0 string \""
level.digit1 ifequal 6 local.PrintString append "6\" xl 80 jcy fc 1 1 1 1.0 string \""
level.digit1 ifequal 7 local.PrintString append "7\" xl 80 jcy fc 1 1 1 1.0 string \""
level.digit1 ifequal 8 local.PrintString append "8\" xl 80 jcy fc 1 1 1 1.0 string \""
level.digit1 ifequal 9 local.PrintString append "9\" xl 80 jcy fc 1 1 1 1.0 string \""
level.digit2 ifequal 0 local.PrintString append "0\""
level.digit2 ifequal 1 local.PrintString append "1\""
level.digit2 ifequal 2 local.PrintString append "2\""
level.digit2 ifequal 3 local.PrintString append "3\""
level.digit2 ifequal 4 local.PrintString append "4\""
level.digit2 ifequal 5 local.PrintString append "5\""
level.digit2 ifequal 6 local.PrintString append "6\""
level.digit2 ifequal 7 local.PrintString append "7\""
level.digit2 ifequal 8 local.PrintString append "8\""
level.digit2 ifequal 9 local.PrintString append "9\""
%introcon conlayout local.PrintString
wait 60 // Wait time
level.mins += 1
level.mins ifequal 10 goto uptens
goto banktimeconprint
uptens:
level.mins *= 0
level.tens += 1
level.tens ifequal 6 goto uphour
goto banktimeconprint
uphour:
level.tens *= 0
level.hour += 1
level.hour ifequal 13 goto switch
goto banktimeconprint
switch:
level.hour = 1
goto banktimeconprint
end
//==========================================
// Neat stuff
//==========================================
t1000_secret:
$t1000origin notsolid
$t1000origin hide
$t1000 bind $t1000origin
wait .1
$t1000origin jumpto $t1000way1
$t1000 ignoreall
$t1000 anim sitting
// $motorcycle time .2
// $motorcycle rotateYdown 180
// waitFor $motorcycle
wait .1
$t1000 bind $motorcycle
wait .1
$t1000 group all +envmapped
$motorcycle jumpto $motoway2
$motorcycle ontrigger start_t1000_secret
pause
start_t1000_secret:
$motoremove1 remove
$motoportal open
thread dialog::blade_what_the
trigger $motobigexpl1
$motobreak1 shatter "0 180 0" 150 10 40 .4 0
$motobreak1 playsound impact/comp_explode/cmpmx3.wav 4 8 -1
$motobreak1 remove
wait 2
$motorcycle playsound vehicle/atv/strt.wav 4 8 -1
wait 2
$motorcycle playsound vehicle/humvee/skid.wav 4 8 -1
$motorcycle followpath $motospline
waitFor $motorcycle
$motorcycle shatter "1 1 1" 20 10 40 .1 0
$motorcycle remove
$t1000 remove
trigger $motoexploder
end
tree_counter:
level.tree_death_toll += 1
// print level.tree_death_toll
level.tree_death_toll ifequal 3 trigger $motorcycle
end
//==========================================
// Goofy Alley sign getting shot thread
//==========================================
shootsign:
$shootsign1 ondamage sign_message
pause
sign_message:
$shootsign1 nodamage
thread dialog::jc_what_are_you_shooting_at1
local.waitforthread = parm.previousthread
waitForThread parm.previousthread
thread dialog::blade_can_it_jc
end
//==========================================
// Turret Skill level settings
//==========================================
SkillLevelSettings:
local.skilllevel getcvar skill
//easy
local.skilllevel ifequal 0 $turret1 rocketrate 10
local.skilllevel ifequal 0 $turret2 rocketrate 8
local.skilllevel ifequal 0 $turret3 rocketrate 10
local.skilllevel ifequal 0 $turret1 health 500
local.skilllevel ifequal 0 $turret2 health 500
local.skilllevel ifequal 0 $turret3 health 800
//medium
local.skilllevel ifequal 1 $turret1 rocketrate 8
local.skilllevel ifequal 1 $turret2 rocketrate 6
local.skilllevel ifequal 1 $turret3 rocketrate 8
local.skilllevel ifequal 1 $turret1 health 1400
local.skilllevel ifequal 1 $turret2 health 1000
local.skilllevel ifequal 1 $turret3 health 1200
//hard
local.skilllevel ifequal 2 $turret1 rocketrate 4
local.skilllevel ifequal 2 $turret2 rocketrate 4
local.skilllevel ifequal 2 $turret3 rocketrate 4
local.skilllevel ifequal 2 $turret1 health 1500
local.skilllevel ifequal 2 $turret2 health 1500
local.skilllevel ifequal 2 $turret3 health 1600
$turret1 lagtime 1
$turret2 lagtime 1
$turret3 lagtime 1
end
//==========================================
// Mission Status
//==========================================
MissionComputer:
//0 nd 1 succeed 2 fail
// level.PObjective1 --> Destroy Rocket Turrets
// level.PObjective2 --> Eliminate All Enemy Forces
// level.PObjective3 --> Gain Entry Into The Bank
// level.SObjective1 --> Minimize Civilian Casualties
%missioncon conlayout "xv -72 yv 76 fc 0.6 0.6 1 1 string \"Air Assault On FCB\""
%missioncon conapplayout "xv -120 yv 60 fc 0.4 0.4 0.8 1 string \"Primary Objective(s):\""
level.PObjective1 ifequal 0 %missioncon conapplayout "xv -118 yv 48 spicn b_blank 0.5 0.5 xv -116 yv 48 fc 0.7 0.7 0.7 1 string \" Destroy Rocket Turrets\""
level.PObjective2 ifequal 0 %missioncon conapplayout "xv -118 yv 36 spicn b_blank 0.5 0.5 xv -116 yv 36 fc 0.7 0.7 0.7 1 string \" Eliminate All Enemy Forces\""
level.PObjective3 ifequal 0 %missioncon conapplayout "xv -118 yv 24 spicn b_blank 0.5 0.5 xv -116 yv 24 fc 0.7 0.7 0.7 1 string \" Gain Entry Into The Bank\""
level.PObjective1 ifequal 1 %missioncon conapplayout "xv -118 yv 48 spicn b_checked 0.5 0.5 xv -116 yv 48 fc 0.3 0.3 0.3 1 string \" Destroy Rocket Turrets\""
level.PObjective2 ifequal 1 %missioncon conapplayout "xv -118 yv 36 spicn b_checked 0.5 0.5 xv -116 yv 36 fc 0.3 0.3 0.3 1 string \" Eliminate All Enemy Forces\""
level.PObjective3 ifequal 1 %missioncon conapplayout "xv -118 yv 24 spicn b_checked 0.5 0.5 xv -116 yv 24 fc 0.3 0.3 0.3 1 string \" Gain Entry Into The Bank\""
level.PObjective1 ifequal 2 %missioncon conapplayout "xv -118 yv 48 spicn b_notchecked 0.5 0.5 xv -116 yv 48 fc 0.3 0.3 0.3 1 string \" Destroy Rocket Turrets\""
level.PObjective2 ifequal 2 %missioncon conapplayout "xv -118 yv 36 spicn b_notchecked 0.5 0.5 xv -116 yv 36 fc 0.3 0.3 0.3 1 string \" Eliminate All Enemy Forces\""
level.PObjective3 ifequal 2 %missioncon conapplayout "xv -118 yv 24 spicn b_notchecked 0.5 0.5 xv -116 yv 24 fc 0.3 0.3 0.3 1 string \" Gain Entry Into The Bank\""
%missioncon conapplayout "xv -120 yv 0 fc 0.4 0.4 0.8 1 string \"Secondary Objective(s):\""
level.SObjective1 ifequal 0 %missioncon conapplayout "xv -118 yv -12 spicn b_blank 0.5 0.5 xv -116 yv -12 fc 0.7 0.7 0.7 1 string \" Minimize Hardcorp Casualties\""
level.SObjective1 ifequal 1 %missioncon conapplayout "xv -118 yv -12 spicn b_checked 0.5 0.5 xv -116 yv -12 fc 0.3 0.3 0.3 1 string \" Minimize Hardcorp Casualties\""
level.SObjective1 ifequal 2 %missioncon conapplayout "xv -118 yv -12 spicn b_notchecked 0.5 0.5 xv -116 yv -12 fc 0.3 0.3 0.3 1 string \" Minimize Hardcorp Casualties\""
end
//==========================================
// Billboard destroyed thread1
//==========================================
billboard_thread:
$billboard hide
$billboard2 bind $billboard
$fountain_flood time .1
$fountain_flood moveDown 10
waitFor $fountain_flood
game.intro_billboard_fall ifequal 0 game.intro_billboard_fall = 1
$billboard_left ondamage billboard_fall_sequence_left
$billboard_right ondamage billboard_fall_sequence_right
pause
billboard_fall_sequence_left:
$billboard_left nodamage
$billboard_right nodamage
game.intro_billboard_fall = 2
wait .3
$billboard time .4
$billboard rotateXdown 56
$billboard moveWest 64
$billboard moveDown 30
waitFor $billboard
$billboard time .7
$billboard rotateXdown 98
$billboard rotateZup 5
$billboard moveDown 495
$billboard moveSouth 16
$billboard moveWest 128
waitFor $billboard
$billboard time .5
$billboard rotateXdown 85
$billboard rotateZup 5
$billboard moveDown 495
$billboard moveSouth 16
$billboard moveWest 128
waitFor $billboard
$billboard time .4
$billboard rotateXdown 71
$billboard rotateZup 5
$billboard moveDown 490
$billboard moveSouth 16
$billboard moveWest 107
waitFor $billboard
$billboard playsound impact/crates/crate3.wav 3.0
$glass1 remove
$glass2 shatter "0 0 0" 25 10 75 .5 0
$glass3 remove
$glass2 remove
$window_bar1 time .5
$window_bar1 moveDown 368
$window_bar1 rotateXup 22
$window_bar1 rotateYup 30
$window_bar1 moveWest 16
waitFor $window_bar1
goto bottom1
//==========================================
// Billboard destroyed thread2
//==========================================
billboard_fall_sequence_right:
$billboard_left nodamage
$billboard_right nodamage
game.intro_billboard_fall = 3
wait .3
$billboard time .4
$billboard rotateXdown 56
$billboard moveWest 64
$billboard moveDown 30
waitFor $billboard
$billboard time .7
$billboard rotateXdown 98
$billboard rotateZup 5
$billboard moveDown 495
$billboard moveSouth 16
$billboard moveWest 128
waitFor $billboard
$billboard time .5
$billboard rotateXdown 85
$billboard rotateZup 5
$billboard moveDown 495
$billboard moveSouth 16
$billboard moveWest 128
waitFor $billboard
$billboard time .4
$billboard rotateXdown 71
$billboard rotateZup 5
$billboard moveDown 490
$billboard moveSouth 16
$billboard moveWest 107
waitFor $billboard
$billboard playsound impact/crates/crate3.wav 3.0
$glass2 shatter "0 0 0" 25 10 75 .5 0
$glass1 remove
$glass2 remove
$glass3 remove
wait .2
$billboard time .7
$window_bar1 time .7
$window_bar2 time .7
$window_bar1 moveDown 368
$window_bar1 rotateXup 22
$window_bar1 rotateYdown 15
$window_bar1 moveWest 16
$window_bar2 moveDown 368
$window_bar2 rotateXup 22
$window_bar2 rotateYup 30
$window_bar2 moveWest 16
$billboard moveDown 356
$billboard rotateXup 20
$billboard rotateZdown 20
waitFor $billboard
$fountain_flood time 15
$fountain_flood moveUp 15
thread bottom2
waitFor $fountain_flood
end
bottom1:
thread dialog::jc_dead_billboard1
local.waitforthread = parm.previousthread
waitForThread parm.previousthread
end
bottom2:
thread dialog::jc_dead_billboard1
local.waitforthread = parm.previousthread
waitForThread parm.previousthread
end
//==========================================
// Awning at entrance setup thread
//==========================================
bank_entrance_thread:
$pillar time .6
$awning1 time .6
$awning2 time .6
$awning3 time .6
$pillar ontrigger bank_entrance_collapse
pause
bank_entrance_collapse:
$pillar notrigger
$awning2 shatter "0 0 0" 25 10 75 .10 0
$pillar rotateZdown 45
waitFor $pillar
$pillar rotateZdown 45
$awning1 rotateZup 45
$awning2 moveDown 128
waitFor $awning2
$awning3 moveDown 100
$awning1 moveDown 128
$awning2 moveDown 128
$awning1 moveSouth 32
$awning2 rotateZdown 15
waitFor $awning2
end
pillar:
$awning2 ondamage start_pillar
$awning1 ondamage start_pillar
$pillar ondamage start_pillar
pause
start_pillar:
$pillar nodamage
$awning2 nodamage
$awning1 nodamage
trigger $pillar
level.piller = 2
level.SObjective1 = 1
thread MissionComputer
thread global/universal_script.scr::SObjectiveComplete
end
//==========================================
// Ammo box #1
//==========================================
ammo1_thread:
$ammo1_roof time 1
$ammo1 ondamage ammo1_sequence
pause
ammo1_sequence:
$ammo1 nodamage
trigger $ammo1_explode
$ammo1 shatter "0 0 0" 75 10 75 .2 0
wait .2
$ammo1 notsolid
$ammo1 hide
$ammo1_roof rotateXdown 15
$ammo1_roof rotateZdown 15
waitFor $ammo1_roof
$ammo1_roof moveDown 128
waitFor $ammo1_roof
end
//==========================================
// Ammo box #2
//==========================================
ammo2_thread:
game.intro_roof_break1 ifequal 0 game.intro_roof_break1 = 1
$ammo2_roof time .5
$ammo2_wall1 time 1.2
$ammo2_wall2 time 1.2
$ammo2 ondamage ammo2_sequence
pause
ammo2_sequence:
$ammo2 nodamage
game.intro_roof_break1 = 2
trigger $ammo2_explode
$ammo2 shatter "0 0 0" 75 10 75 .2 0
wait .2
$ammo2 notsolid
$ammo2 hide
$ammo2_roof rotateXdown 15
$ammo2_roof rotateZdown 15
waitFor $ammo2_roof
$ammo2_roof moveDown 128
waitFor $ammo2_roof
end
//------------------------------------------
//******************************************
//==========================================
// ALL HELICOPTER STUFF
//==========================================
//******************************************
//------------------------------------------
//==========================================
// Helicopter setup thread
//==========================================
helicopter_setup_thread:
$rotors_brush notsolid // Rotor origin
$rotors_brush hide // Rotor origin
$rotors_brush bind $helicopter
$heligun_origin bind $helicopter
$blade2 bind $heligun_origin
$heligun bind $heligun_origin
$heli_fuckshitup bind $helicopter // Random sound emitter
wait .1
$rotors bind $rotors_brush
wait .1
$rotors_brush time 1 // Start rotors spinning
$rotors_brush rotateY 720
end
//==========================================
// Random sounds played from heli
//==========================================
random_sounds:
wait 10
random_sound_loop:
wait 10
local.rndsnd randomint 5
local.rndsnd ifequal 1 goto combat_one
local.rndsnd ifequal 2 goto combat_two
local.rndsnd ifequal 3 goto combat_five
local.rndsnd ifequal 4 goto combat_six
local.rndsnd ifequal 5 goto combat_seven
end
combat_one:
parm.actor1 string "$heli_fuckshitup"
thread dialog::combat_one
local.waitforthread = parm.previousthread
waitForThread parm.previousthread
goto random_sound_loop
end
combat_two:
parm.actor1 string "$heli_fuckshitup"
thread dialog::combat_two
local.waitforthread = parm.previousthread
waitForThread parm.previousthread
goto random_sound_loop
end
combat_five:
parm.actor1 string "$heli_fuckshitup"
thread dialog::combat_five
local.waitforthread = parm.previousthread
waitForThread parm.previousthread
goto random_sound_loop
end
combat_six:
parm.actor1 string "$heli_fuckshitup"
thread dialog::combat_six
local.waitforthread = parm.previousthread
waitForThread parm.previousthread
goto random_sound_loop
end
combat_seven:
parm.actor1 string "$heli_fuckshitup"
thread dialog::combat_seven
local.waitforthread = parm.previousthread
waitForThread parm.previousthread
goto random_sound_loop
end
//==========================================
// Helicopter damage dialog thread
//==========================================
heli_damage_dialog:
level.helidamage ifgreater 500 goto nextmessage1
wait 1
goto heli_damage_dialog
nextmessage1:
thread dialog::pilot_hit2
nextmessage1a:
level.helidamage ifgreater 900 goto nextmessage2
wait 1
goto nextmessage1a
nextmessage2:
thread dialog::pilot_hit1
nextmessage2a:
level.helidamage ifgreater 1250 goto nextmessage3
wait 1
goto nextmessage2a
nextmessage3:
thread dialog::pilot_hit3
nextmessage3a:
level.helidamage ifgreater 1550 goto nextmessage4
wait 1
goto nextmessage3a
nextmessage4:
thread dialog::pilot_sec_airsupport
nextmessage4a:
level.helidamage ifgreater 1800 goto nextmessage5
wait 1
goto nextmessage4a
nextmessage5:
thread dialog::jc_chopper_repair
nextmessage5a:
level.helidamage ifgreater 2000 goto nextmessage6
wait 1
goto nextmessage5a
nextmessage6:
thread dialog::pilot_going_down
nextmessage6a:
level.helidamage ifgreater 2500 goto fucked
wait 1
goto nextmessage6a
fucked:
level.PObjective1 = 2
level.PObjective2 = 2
level.PObjective3 = 2
level.SObjective1 = 2
thread MissionComputer
thread global/universal_script.scr::PObjectiveFailed
cueplayer
*1 playerkill
wait 2.5
*1 respawn
end
//==========================================
// Helicopter Damage sounds
//==========================================
heli_hit:
level.hitme_hit ifequal 1 goto heli_already_hit
level.hitme_hit = 1
$rotors playsound misc/null.wav 1 7
wait .1
$rotors playsound vehicle/helicopt/hit1.wav 2 7
wait 3.8
$rotors playsound vehicle/helicopt/flyloop.wav 2 7
level.hitme_hit = 0
end
heli_already_hit:
end
//==========================================
// Helicopter Start moving
//==========================================
helicopter_ride_thread: // This is called by thugs talking
thread helicopter_setup_thread
waitForThread parm.previousthread
start_copter: // Copter coming from around the corner
wait 2
$helicopter followpath $path1_startintro
wait 3
$rotors playsound vehicle/helicopt/flyloop.wav 2 7
waitFor $helicopter
end
start_action_thread:
hud 1
//releaseplayer
$helicopter lock
$helicopter doUse *1
$blade2 remove
$heligun hide
$cinematic_thug1 remove
$cinematic_thug2 remove
thread move_dudes_up
releaseplayer
fadein 1 0 0 0
wait 1
music normal
thread thugs_attacked_dialog1
thread blade_talksmack1
//==========================================
// Kill both thugs setup thread
// This is where the game should jump to
// if the cinematic is killed
//==========================================
kill_cinematic_thugs:
thread hover_path
local.deathindex = 0
level.hoverpathover = 0
kill_cinematic_thugs_loop:
$thug_death_counter ontrigger counterup
pause
counterup:
local.deathindex += 1
local.deathindex ifequal 2 goto start_level_loop
goto kill_cinematic_thugs_loop
end
move_dudes_up: // Lift real thugs up quake1 style :]
$remove_me_for_guys remove
$move_guys_up time .1
$move_guys_up moveUp 112
waitFor $move_guys_up
end
//==========================================
// Helicopter Hover loop
//==========================================
hover_path:
$helicopter followpath $hover_path
waitFor $helicopter
level.hoverpathover ifequal 1 goto start_heli_loop
level.hoverpathover ifequal 0 goto hover_path
end
start_level_loop:
level.hoverpathover = 1
end
heli_loop_dialog_start:
thread global/universal_script.scr::StatusUpdated
local.waitforthread = parm.previousthread
waitForThread parm.previousthread
thread dialog::jc_remember_boss
end
//==========================================
// Start helicopter main loop
//==========================================
start_heli_loop:
thread heli_loop_dialog_start
thread main_level_spawn_loop // Start up main level bad guy spawn loop
$helicopter followpath $down_path
waitFor $helicopter
//==========================================
// Loop copter, check damage, etc.
//==========================================
helicopter_loop_sequence:
$helicopter followpath $loop_path
waitFor $helicopter
level.turretsdead ifequal 5 goto helicopter_land_roof
level.complete ifgreaterequal 2 goto helicopter_land_roof
level.helidamage iflessequal 2000 goto helicopter_loop_sequence
//==========================================
// Helicopter Crashing on ground start
//==========================================
$helicopter followpath $road_path
thread copter_goin_down
waitFor $helicopter
$rotors playsound misc/null.wav 1 7
wait .1
$rotors playsound vehicle/helicopt/hidown.wav 1.0 7
thread dialog::pilot_were_down_whew_close
$helicopter unlock
hud 0
trigger $rotors_brush
fadeout 1 0 0 0
wait 1
//thread dialog2 // Dialog not available
thread groundcam_thread // Start end ground cinematic
goto heli_end
//==========================================
// Helicopter lands on roof
//==========================================
helicopter_land_roof:
level.PObjective3 = 1
thread global/universal_script.scr::PObjectiveComplete
thread MissionComputer
$helicopter followpath $roof_path
waitFor $helicopter
thread land_roof_dialogue2_thread
$helicopter stopsound
$helicopter playsound vehicle/helicopt/hidown.wav 1.0 7
thread roofcam_thread // Start end roof cinematic
trigger $rotors_brush
heli_end:
end
//==========================================
// Helicopter monitor damage thread
//==========================================
helicopter_damage_thread:
helicopter_damage_start:
$helicopter ondamage heli_damage_sequence
$rotors ondamage heli_damage_sequence
pause
heli_damage_sequence:
$helicopter nodamage
$rotors nodamage
thread heli_hit // Helicopter damage sounds
level.helidamage += local.damage
goto helicopter_damage_start
end
//==========================================
// Helicopter Rotor Spindown
//==========================================
rotors_spin_down_thread:
level.rotors_speed = 720
$rotors_brush ontrigger rotors_spin_down_loop_begin
pause
rotors_spin_down_loop_begin:
$rotors_brush notrigger
rotors_spin_down_loop:
level.rotors_speed -= 5
$rotors_brush rotateY level.rotors_speed
wait .1
level.rotors_speed ifgreater 0 goto rotors_spin_down_loop
end
//==========================================
// Helicopter Goto Roof
//==========================================
roofheli_thread:
wait 1
$helicopter followpath $roofhelistart
waitFor $helicopter
end
//******************************************
//==========================================
// End of Helicopter section
//==========================================
//******************************************
//------------------------------------------
//******************************************
//==========================================
// LEVEL DIALOG THREADS
//==========================================
//******************************************
//------------------------------------------
//==========================================
// Thugs Talking at start of action
//==========================================
thugs_attacked_dialog1:
parm.thug1 string "$dialog_airattack"
thread dialog::thug_air_attack
end
thugs_attacked_dialog2:
parm.thug1 string "$dialog_runforcover"
thread dialog::thug_get_to_launchers1
blade_talksmack1:
wait 2
thread dialog::blade_not_so_fast
end
//==========================================
// Pilot says "copter goin down!"
//==========================================
copter_goin_down:
thread dialog::pilot_controls_arent_responding
local.waitforthread = parm.previousthread
waitForThread parm.previousthread
thread dialog::blade_uh_oh
wait 2
thread dialog::pilot_hang_on1
end
dialog2:
wait 3
thread dialog::jc_get_in_there
end
land_roof_dialogue1_thread:
wait 2
thread dialog::jc_rooftop_landin
local.waitforthread = parm.previousthread
waitForThread parm.previousthread
end
land_roof_dialogue2_thread:
thread dialog::pilot_drop_and_dust
end
//------------------------------------------
//******************************************
//==========================================
// LEVEL GAMEPLAY AND LOGIC
//==========================================
//******************************************
//------------------------------------------
//==========================================
// Temp scriptobject for turret death level variables
//==========================================
turret1_deathreport:
$turret1_dead ontrigger 1change
pause
1change:
$turret1_dead remove
level.turret1_nuked = 1
end
turret2_deathreport:
$turret2_dead ontrigger 2change
pause
2change:
$turret2_dead remove
level.turret2_nuked = 1
end
turret3_deathreport:
$turret3_dead ontrigger 3change
pause
3change:
$turret3_dead remove
level.turret3_nuked = 1
end
//==========================================
// Main level Loop (for spawning characters.
// and randomly choosing stuff to happen in
// the streets)
//==========================================
main_level_spawn_loop:
level.complete ifgreater 0 thread spawn_levelisdone
level.complete ifgreater 0 goto end_main
thread spawn_check_bad_guys
wait 3
goto main_level_spawn_loop
end_main:
end
//==========================================
// Psyco spawn BAD GUY checking thread
//==========================================
spawn_check_bad_guys:
level.count_bad_guys ifequal 3 goto spawn_check_end
goto spawn_roof_check
end
//Spawn guys on roof randomness
spawn_roof_check:
local.rndroof randomint 100
local.rndroof iflessequal 33 goto turret1_startspawn
local.rndroof ifgreater 33 goto more_roof_rnd
more_roof_rnd:
local.rndroof iflessequal 66 goto turret2_startspawn
local.rndroof ifgreater 66 goto turret3_startspawn
end
turret1_startspawn:
level.turret1_active ifequal 1 goto spawn_guythere
level.turret1_nuked ifequal 1 goto spawn_guythere
level.turret1_active ifequal 0 thread spawn_guy_at_turret1
end
turret2_startspawn:
level.turret2_active ifequal 1 goto spawn_guythere
level.turret2_nuked ifequal 1 goto spawn_guythere
level.turret2_active ifequal 0 thread spawn_guy_at_turret2
end
turret3_startspawn:
level.turret3_active ifequal 1 goto spawn_guythere
level.turret3_nuked ifequal 1 goto spawn_guythere
level.turret3_active ifequal 0 thread spawn_guy_at_turret3
end
spawn_levelisdone:
level.count_bad_guys ifequal 0 goto obj2_done
wait 1
goto spawn_levelisdone
obj2_done:
level.complete += 1
level.PObjective2 = 1
thread MissionComputer
thread global/universal_script.scr::PObjectiveComplete
wait 1
thread land_roof_dialogue1_thread // Turrets dead, no more baddies
end
spawn_check_end: // Enough Bad guys
end
spawn_guythere: // Bad guy already there
end
//==========================================
//==========================================
// Turret counter and level.complete state.
//==========================================
turret_death_wait:
local.turret_death_index = 0
turret_death_loop:
$turret_death_counter ontrigger count_turret
pause
count_turret:
$turret_death_counter notrigger
local.turret_death_index += 1
local.turret_death_index ifequal 3 goto turrets_dead
local.turret_death_index ifequal 1 thread dialog::pilot_nice_shooting
local.turret_death_index ifequal 2 thread dialog::jc_way_to_hit
goto turret_death_loop
turrets_dead:
level.turretsdead = 5
level.PObjective1 = 1
thread MissionComputer
thread global/universal_script.scr::PObjectiveComplete
level.complete += 1
end
//==========================================
// Spawn People in to turrets
//==========================================
// Removed window guys Spawn code 9/29
//==========================================
spawn_guy_at_turret1: // Thug1 dude
trigger $spawner1
level.count_bad_guys += 1
level.turret1_active = 1
wait .1
$thug1 thread thug1_setstates
wait 2
trigger $thug1
end
thug1_setstates:
local.self ignore runtoarea
local.self ignore doorsound mutantsound voicesound machinesound radiosound
local.self ignore weaponsound movementsound painsound deathsound breakingsound
local.self ignore attackentity use sightenemy
local.self definestate activate thug1_activated
local.self definestate killed thug1_killed
local.self definestate idle thug1_idle
local.self state idle
pause
thug1_idle:
local.self anim idle
waitFor local.self
pause
goto thug1_idle
thug1_activated:
$door1 open $thug1
local.self ignore activate
local.self runto $turret1_path1
waitFor local.self
local.self runto $turret1_path2
waitFor local.self
$turret1 activate
local.self anim manrocket1
pause
end
thug1_killed:
$turret1 deactivate
level.turret1_active = 0
level.count_bad_guys -= 1
end
spawn_guy_at_turret2: // Thug2 dude
trigger $spawner2
level.count_bad_guys += 1
level.turret2_active = 1
wait .1
$thug2 thread thug2_setstates
wait 2
trigger $thug2
end
thug2_setstates:
local.self ignore runtoarea
local.self ignore doorsound mutantsound voicesound machinesound radiosound
local.self ignore weaponsound movementsound painsound deathsound breakingsound
local.self ignore attackentity use sightenemy
local.self definestate activate thug2_activated
local.self definestate killed thug2_killed
local.self definestate idle thug2_idle
local.self state idle
pause
thug2_idle:
local.self anim idle
waitFor local.self
pause
goto thug2_idle
thug2_activated:
$door2 open $thug2
local.self ignore activate
local.self runto $turret2_path1
waitFor local.self
local.self runto $turret2_path2
waitFor local.self
$turret2 activate
local.self anim manrocket1
pause
end
thug2_killed:
$turret2 deactivate
level.turret2_active = 0
level.count_bad_guys -= 1
//thread spawn_guy_at_turret2
end
spawn_guy_at_turret3: // Thug3 dude
trigger $spawner3
level.count_bad_guys += 1
level.turret3_active = 1
wait .1
$thug3 thread thug3_setstates
wait 2
trigger $thug3
end
thug3_setstates:
local.self ignore runtoarea
local.self ignore doorsound mutantsound voicesound machinesound radiosound
local.self ignore weaponsound movementsound painsound deathsound breakingsound
local.self ignore attackentity use sightenemy
local.self definestate activate thug3_activated
local.self definestate killed thug3_killed
local.self definestate idle thug3_idle
local.self state idle
pause
thug3_idle:
local.self anim idle
waitFor local.self
pause
goto thug3_idle
thug3_activated:
$door3 open $thug3
local.self ignore activate
local.self runto $turret3_path1
waitFor local.self
local.self runto $turret3_path2
waitFor local.self
$turret3 activate
local.self anim manrocket1
pause
end
thug3_killed:
$turret3 deactivate
level.turret3_active = 0
level.count_bad_guys -= 1
//thread spawn_guy_at_turret3
end
precache:
cachesound "environment/alarm/police/siren2.wav"
cachesound "environment/alarm/police/siren2down.wav"
cachesound "impact/comp_explode/cmpmx3.wav"
cachesound "impact/crates/crate3.wav"
cachesound "misc/null.wav"
cachesound "vehicle/helicopt/hit1.wav"
cachesound "vehicle/helicopt/flyloop.wav"
cachesound "vehicle/helicopt/hidown.wav"
cachesound "vehicle/atv/strt.wav"
cachesound "vehicle/humvee/skid.wav"
end